Chat Application তৈরি

Web Development - এএসপি ডট (ASP.Net) - SignalR ব্যবহার করে রিয়েল-টাইম অ্যাপ্লিকেশন |
2
2

ASP.Net Core ব্যবহার করে একটি real-time chat application তৈরি করা সম্ভব। এর জন্য SignalR টেকনোলজি ব্যবহার করা হয়, যা real-time web functionality প্রদান করে, যেমন ইন্টারেকটিভ chat অ্যাপ্লিকেশন বা live notifications। SignalR প্রক্রিয়াটি ক্লায়েন্ট ও সার্ভারের মধ্যে ডেটা সহজভাবে এবং দ্রুতভাবে ট্রান্সফার করতে সাহায্য করে।

এখানে একটি সাধারণ chat application তৈরি করার উদাহরণ দেওয়া হলো যেখানে ক্লায়েন্টরা real-time চ্যাট করতে পারে।


১. প্রজেক্ট তৈরি করা

প্রথমে, ASP.Net Core Web Application তৈরি করুন এবং প্রজেক্ট টাইপ হিসেবে Web Application (Model-View-Controller) নির্বাচন করুন।

NuGet প্যাকেজ ইনস্টলেশন

SignalR ব্যবহার করতে, আপনার প্রজেক্টে Microsoft.AspNetCore.SignalR NuGet প্যাকেজ ইনস্টল করতে হবে। এটি SignalR এর জন্য প্রয়োজনীয় লাইব্রেরি।

dotnet add package Microsoft.AspNetCore.SignalR

২. SignalR Hub তৈরি করা

SignalR একটি Hub এর মাধ্যমে সার্ভার ও ক্লায়েন্টের মধ্যে কমিউনিকেশন পরিচালনা করে। Hub একটি বিশেষ ক্লাস যা ক্লায়েন্ট এবং সার্ভারের মধ্যে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।

ChatHub.cs

প্রথমে Hub ক্লাসটি তৈরি করুন:

using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub
{
    // মেসেজ পাঠানো
    public async Task SendMessage(string user, string message)
    {
        // সার্ভার থেকে সব ক্লায়েন্টদের মেসেজ পাঠানো
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

এখানে SendMessage মেথডটি ক্লায়েন্ট থেকে সার্ভারে মেসেজ গ্রহণ করে এবং ReceiveMessage মেথডের মাধ্যমে সব ক্লায়েন্টদের মেসেজ পাঠিয়ে দেয়।


৩. SignalR Hub কনফিগারেশন

Startup.cs বা Program.cs ফাইলে SignalR Hub কনফিগার করুন।

Program.cs (ASP.Net Core 6 বা তার পরের সংস্করণের জন্য)

var builder = WebApplication.CreateBuilder(args);

// SignalR সেবা কনফিগার করা
builder.Services.AddSignalR();

var app = builder.Build();

// SignalR Hub কনফিগার করা
app.MapHub<ChatHub>("/chathub");

app.Run();

৪. Client-Side Implementation

Client-side JavaScript দিয়ে SignalR Hub এর সাথে যোগাযোগ তৈরি করতে হবে। এখানে আমরা JavaScript এবং SignalR Client Library ব্যবহার করব।

_Layout.cshtml (Client-Side)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Chat Application</title>
    <script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@5.0.0/dist/browser/signalr.min.js"></script>
</head>
<body>
    <div>
        <h1>Real-time Chat</h1>
        <input type="text" id="userInput" placeholder="Enter your name" />
        <textarea id="messageInput" placeholder="Enter your message"></textarea>
        <button id="sendButton">Send</button>
    </div>

    <div id="chatMessages"></div>

    <script>
        // SignalR Hub Connection
        const connection = new signalR.HubConnectionBuilder()
            .withUrl("/chathub")
            .build();

        // মেসেজ রিসিভ করার জন্য ক্লায়েন্ট সাইড মেথড
        connection.on("ReceiveMessage", function (user, message) {
            const chatMessages = document.getElementById("chatMessages");
            const msg = `${user}: ${message}`;
            const newMessage = document.createElement("p");
            newMessage.textContent = msg;
            chatMessages.appendChild(newMessage);
        });

        // Hub এর সাথে কানেক্ট করা
        connection.start().catch(function (err) {
            return console.error(err.toString());
        });

        // Send Button Click হ্যান্ডল করা
        document.getElementById("sendButton").addEventListener("click", function () {
            const user = document.getElementById("userInput").value;
            const message = document.getElementById("messageInput").value;
            // সার্ভারে মেসেজ পাঠানো
            connection.invoke("SendMessage", user, message).catch(function (err) {
                return console.error(err.toString());
            });
        });
    </script>
</body>
</html>

এখানে:

  • SignalR Client Library যোগ করা হয়েছে।
  • connection.on মেথডের মাধ্যমে সার্ভার থেকে মেসেজ রিসিভ করা হচ্ছে এবং সেই মেসেজকে ক্লায়েন্ট সাইডে প্রদর্শন করা হচ্ছে।
  • connection.invoke মেথডের মাধ্যমে ক্লায়েন্টের মেসেজ সার্ভারে পাঠানো হচ্ছে।

৫. Run the Application

এখন, আপনার ASP.Net Core Chat Application রান করুন। ক্লায়েন্টরা একে অপরের মেসেজ রিয়েল-টাইমে দেখতে পাবে। যখন একটি ক্লায়েন্ট মেসেজ পাঠাবে, তা অন্য সকল ক্লায়েন্টের স্ক্রীনে রিয়েল-টাইমে প্রদর্শিত হবে।


সারাংশ

এভাবে আপনি ASP.Net Core এবং SignalR ব্যবহার করে একটি সহজ real-time chat application তৈরি করতে পারেন। SignalR ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদানকে দ্রুত এবং ইন্টারেকটিভ করতে সহায়তা করে, যা চ্যাট অ্যাপ্লিকেশন, লাইভ নোটিফিকেশন, বা রিয়েল-টাইম ডেটা প্রসেসিংয়ের জন্য খুবই কার্যকর।

Content added By
Promotion